package com.youlai.boot.util;

import cn.hutool.core.util.StrUtil;

import java.math.BigDecimal;

public class NumUtil {

    public final static BigDecimal VALUE = new BigDecimal(1.06);

    /**
     * 手续费汇总
     *
     * @param userName
     * @param A        是否除以1.06
     * @param G        强险
     * @param K        强险政策
     * @param H        商业险
     * @param L        商业政策
     * @param J        驾乘险
     * @param M        驾乘险政策
     * @return
     */
    public static BigDecimal shouXuFei(String userName, Boolean A, BigDecimal G, BigDecimal K, BigDecimal H, BigDecimal L, BigDecimal J, BigDecimal M) {
        if (StrUtil.isBlank(userName)) {
            return BigDecimal.ZERO;
        }
        if (G == null) {
            G = BigDecimal.ZERO;
        }
        if (K == null) {
            K = BigDecimal.ZERO;
        }
        if (H == null) {
            H = BigDecimal.ZERO;
        }
        if (L == null) {
            L = BigDecimal.ZERO;
        }
        if (J == null) {
            J = BigDecimal.ZERO;
        }
        if (M == null) {
            M = BigDecimal.ZERO;
        }

        BigDecimal result;
        if (A) {
            if (G.compareTo(BigDecimal.ZERO) != 0) {
                G = G.divide(VALUE, 10, BigDecimal.ROUND_HALF_UP).multiply(K);
            }
            if (H.compareTo(BigDecimal.ZERO) != 0) {
                H = H.divide(VALUE, 10, BigDecimal.ROUND_HALF_UP).multiply(L);
            }
            if (J.compareTo(BigDecimal.ZERO) != 0) {
                J = J.divide(VALUE, 10, BigDecimal.ROUND_HALF_UP).multiply(M);
            }
            result = G.add(H).add(J);
        } else {
            result = G.multiply(K).add(H.multiply(L)).add(J.multiply(M));
        }
        return result.setScale(2, BigDecimal.ROUND_HALF_UP);
    }


    /**
     * 应收
     * =IF(D2="","",IF(A2=0,(G2+H2+I2+J2)-U2,(G2+H2+J2+I2)-U2))
     *
     * @param userName
     * @param A        是否除以1.06
     * @param G        强险
     * @param H        商业险
     * @param I        车船税
     * @param J        驾乘险
     * @param U        返给业务员
     * @return
     */
    public static BigDecimal yingShou(String userName, Boolean A, BigDecimal G, BigDecimal H, BigDecimal I, BigDecimal J, BigDecimal U) {
        if (StrUtil.isBlank(userName)) {
            return BigDecimal.ZERO;
        }
        if (A) {
            //公式一样不做处理
        }
        //为空则为0
        if (G == null) {
            G = BigDecimal.ZERO;
        }
        if (H == null) {
            H = BigDecimal.ZERO;
        }
        if (I == null) {
            I = BigDecimal.ZERO;
        }
        if (J == null) {
            J = BigDecimal.ZERO;
        }
        // 返给业务员
        if (U == null) {
            U = BigDecimal.ZERO;
        }

        BigDecimal sum = G.add(H).add(I).add(J);
        BigDecimal result = sum.subtract(U);
        return result.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 利润
     *
     * @param Q 手续费汇总
     * @param U 返给业务员（客户）
     * @return
     */
    public static BigDecimal liRun(BigDecimal Q, BigDecimal U) {
        if (Q == null) {
            return BigDecimal.ZERO;
        }
        if (U == null) {
            return BigDecimal.ZERO;
        }
        return Q.subtract(U).setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 返给业务员
     * =IFERROR(IF(A2=0,((G2/1.06)*N2)+((H2/1.06)*O2)+((J2/1.06)*P2),(G2*N2)+(H2*O2)+(J2*P2)),"")
     *
     * @param A 是否除以1.06
     * @param G 强险
     * @param H 商业险
     * @param J 驾乘险
     * @param N 强险返点
     * @param O 商业返点
     * @param P 驾乘返点
     * @return
     */
    public static BigDecimal yeWuYuan(Boolean A, BigDecimal G, BigDecimal H, BigDecimal J, BigDecimal N, BigDecimal O, BigDecimal P) {
        if (G == null) {
            G = BigDecimal.ZERO;
        }
        if (H == null) {
            H = BigDecimal.ZERO;
        }
        if (J == null) {
            J = BigDecimal.ZERO;
        }
        if (N == null) {
            N = BigDecimal.ZERO;
        }
        if (O == null) {
            O = BigDecimal.ZERO;
        }
        if (P == null) {
            P = BigDecimal.ZERO;
        }

        BigDecimal result = BigDecimal.ZERO;
        if (A) {
            if (G.compareTo(BigDecimal.ZERO) != 0) {
                G = G.divide(VALUE, 10, BigDecimal.ROUND_HALF_UP).multiply(N);
            }
            if (H.compareTo(BigDecimal.ZERO) != 0) {
                H = H.divide(VALUE, 10, BigDecimal.ROUND_HALF_UP).multiply(O);
            }
            if (J.compareTo(BigDecimal.ZERO) != 0) {
                J = J.divide(VALUE, 10, BigDecimal.ROUND_HALF_UP).multiply(P);
            }
            result = G.add(H).add(J);
        } else {
            result = G.multiply(N).add(H.multiply(O)).add(J.multiply(P));
        }

        return result.setScale(2, BigDecimal.ROUND_HALF_UP);
    }
}
